package chapter07

/**
  * create by undeRdoG on  2021-06-02  16:09
  * 凡心所向，素履以往，生如逆旅，一苇以航。
  */
object Test01_ImmutableArray {
  def main(args: Array[String]): Unit = {
    // 创建数组
    val arr = new Array[Int](5)

    // 另一种构建方式    此处使用了Array 伴生对象的 apply 方法， apply 可以省略
    val arr2 = Array(1, 2, 3, 4, 5)

    // 访问数组中的元素
    println(arr2(0))
    println(arr2(4))

    /**
      * 不可变集合，是指 引用类型的大小不能变、地址不能变，但对象中的内容是可以变得
      **/
    // 修改当中的元素
    arr2(0) = 1995
    println(arr2(0))

    //  使用循环 数组遍历
    // 1) 普通循环
    for (i <- 0 until arr2.length) {
      println(arr2(i))
    }

    for (i <- arr.indices) println(arr2(i))

    // 2)  直接遍历所有元素  增强for循环
    for (ele <- arr2) println(ele)

    // 3)  使用迭代器
    val iterator: Iterator[Int] = arr2.iterator
    while (iterator.hasNext) {
      println(iterator.next)
    }


    // 4) 调用foreach方法

    arr2.foreach(println)


    // 把所有元素用  *  连接起来 打印
    println(arr2.mkString("*"))

    println("===========================================================================================")

    // 4 添加元素  生成一个新的对象
    val newArray: Array[Int] = arr2.:+(100)
    newArray.foreach(println)

    // 往集合头部添加
    val newArray2 = arr2.+:(999)
    newArray.foreach(println)

    // 往集合头部添加
    val newArray3 = newArray2 :+ 100

    // 往危机和尾部添加
    var newArrays4 = 101 +: newArray3

  }

}
